package org.itstack.state;

/**
 * 上下文类
 * 维护当前状态并处理状态转换
 * 
 * 设计原则：
 * - 单一职责：只负责状态管理和转换
 * - 依赖倒置：依赖抽象状态接口
 * - 开闭原则：通过状态类扩展行为
 */
public class Context {
    
    private State currentState;
    private final String id;
    
    /**
     * 构造函数
     * @param id 上下文标识
     * @param initialState 初始状态
     */
    public Context(String id, State initialState) {
        this.id = id;
        this.currentState = initialState;
    }
    
    /**
     * 获取上下文ID
     * @return 上下文ID
     */
    public String getId() {
        return id;
    }
    
    /**
     * 获取当前状态名称
     * @return 当前状态名称
     */
    public String getCurrentState() {
        return currentState.getStateName();
    }
    
    /**
     * 设置新状态
     * @param newState 新状态
     */
    public void setState(State newState) {
        this.currentState = newState;
    }
    
    /**
     * 处理动作
     * @param action 动作名称
     */
    public void handleAction(String action) {
        currentState.handle(this, action);
    }
}
